"use strict";
// 声明一个类. 声明类之后会产生一个类型
class Computer {
    //方法
    constructor(brand, color) {
        this.name = "电脑";
        this.brand = brand;
        this.color = color;
    }
    //声明方法
    playGame() {
        console.log("可以玩游戏~~");
    }
}
class LapTop extends Computer {
    constructor(brand, color, size, weight) {
        //调用 super
        super(brand, color);
        this.size = size;
        this.weight = weight;
    }
}
//实例化  声明了一个 Computer 类型的变量, 变量的值为一个对象
// let lx:Computer = new Computer('联想', '灰色');
// let lx = new Computer('联想', '灰色');
//实例化子类
let hp = new LapTop("惠普", "白色", "15.6", "2.5kg");
console.log(hp);
{
    //
    class A {
        constructor() {
            //公共的   在任意位置都可以访问
            this.pa = "aaa";
            //受保护的  能在本类和子类中访问, 类的外部无法访问
            this.pb = "bbb";
            //私有的. 只能在当前本类中, 子类和类的外部都无法访问
            this.pc = "ccc";
        }
        getProp() {
            console.log(this.pa);
            console.log(this.pb);
            console.log(this.pc);
        }
    }
    class B extends A {
        getProp() {
            //访问 pa pb pc
            console.log(this.pa); // OK
            console.log(this.pb); // OK
            // console.log(this.pc);// NG
        }
    }
    let a = new A();
    // console.log(a.pa);
    // console.log(a.pb);// 属性“pb”受保护，只能在类“A”及其子类中访问
    // console.log(a.pc);// 属性“pc”为私有属性，只能在类“A”中访问
    // a.getProp();
    //实例化 B
    let b = new B();
    console.log(b);
}
